<script>
    let list = [
        { id: 1, name: '部门A', parentId: 0 },
        { id: 2, name: '部门B', parentId: 0 },
        { id: 3, name: '部门C', parentId: 1 },
        { id: 4, name: '部门D', parentId: 1 },
        { id: 5, name: '部门E', parentId: 2 },
        { id: 6, name: '部门F', parentId: 3 },
        { id: 7, name: '部门G', parentId: 2 },
        { id: 8, name: '部门H', parentId: 4 }
    ];
    function convert(list) {
        const res = []
        const map = list.reduce((res, v) => (res[v.id] = v, res), {})//函数累计处理的结果
        for (const item of list) {
            if (item.parentId === 0) {
                res.push(item)
                continue
            }
            if (item.parentId in map) {
                const parent = map[item.parentId]
                parent.children = parent.children || []
                parent.children.push(item)
            }
        }
        return res
    }
    console.log(convert(list))
    //实现思路：找一个对象，以id为key把所有的数据存在对象中，存的是一个地址
    //然后循环数组，找到元素的父级存入一个数组，如果该元素不是父级元素
    //就根据当前元素的父级id找到对象对应的值，然后给该值添加一个children
    //将当前元素push进去
</script>